\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{dim. mai 8 13:44:51 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={OpenSSL - pkcs8},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Outil de conversion de clé privée au format pkcs\#8},
CreationDate={D:20160508134451},
ModDate={D:20160508134451},
Keywords={PKI;sécurité;chiffrement;certificats}
}}
\begin{document}
 
\begin{center}
{\Huge OpenSSL - pkcs8 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Outil de conversion de clé privée au format pkcs\#8}
 
\vspace{10mm}
 
\hspace{1mm}  Cette commande traite les clé privées au format pkcs\#8. Elle peut gérer le format PrivateKeyInfo et EncryptedPrivateKeyInfo avec divers algorithmes PKCS\#5 (1.5 et 2.0) et PKCS\#12.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -topk8]{Normallement une clé privée PKCS\#8 est attendue en entrée et un format de clé privée traditionnel est écris. Cette option inverse la situation}
\item[\hspace{1mm} -inform DER|PEM]{Spécifie le format d'entrée}
\item[\hspace{1mm} -outform DER|PEM]{Spécifie le format de sortie}
\item[\hspace{1mm} -passing arg]{Source du mot de passe du fichier d'entrée}
\item[\hspace{1mm} -out filename]{Fichier de sortie}
\item[\hspace{1mm} -passout arg]{source du mot de passe du fichier de sortie}
\item[\hspace{1mm} -iter count]{En créant un nouveau conteneur PKCS\#8, utilise le nombre d'itérations donné sur le mot de passe pour dériver la clé de chiffrement.}
\item[\hspace{1mm} -nocrypt]{Les clé PKCS\#8 générées sont normallement des structures EncryptedPrivateKeyInfo. Cette option créé des structure PrivateKeyInfo.}
\item[\hspace{1mm} -2 alg]{Active l'utilisation des algorithmes PKCS\#5 v2.0. Normalement les clés privées PKCS\#8 sont chiffrées avec un mot de passe basé sur l'algorithme de chiffrement pbeWithMD5AndDES-CBC qui utilise DES 56-bits. PKCS\#5 v2.0 permet d'utiliser des algorithmes tel que 3DES 168bits, ou RC2 128bits.}
\item[\hspace{1mm} -v2prf alg]{Définis l'algorithme PRF à utiliser avec PKCS\#5 v2.0. Une valeur typique est hmacWithSHA256}
\item[\hspace{1mm} -v1 alg]{Définis l'algorithme PKCS\#5 v1.5 ou PKCS\#12 à utiliser.}
\item[\hspace{1mm} -nooct]{Génère des clé privées RSA dans un format cassé que certains logiciels utilisent}
\item[\hspace{1mm} -embed]{Génère des clé DSA dans un format cassé.}
\item[\hspace{1mm} -nsdb]{Génère des clé DSA dans un format cassé compatible avec les base de clé privée Netscape.}
\item[\hspace{1mm} -engine id]{pkcs8 va tenter d'obtenir une référence fonctionnelle du moteur spécifié.}
\item[\hspace{1mm} -scrypt]{Utilise l'algorithme scrypt pour le chiffrement de la clé privée en utilisant les paramètres par défaut. Actuellement N=16384, r=8 et p=1 et AES en mode CBC avec une clé 256 bits. Ces paramètres peuvent être modifiés avec -scrypt\_N, -scrypt\_r, -scrypt\_p et -v2}
\end{description}
 
\vspace{1cm}{\huge Notes }
 
\
 
\hspace{1mm} Le format chiffré des fichiers PKCS\#8 encodés PEM utilisent les en-tête et fin suivant:
 
{\ttfamily
-----BEGIN ENCRYPTED PRIVATE KEY-----\\ -----END ENCRYPTED PRIVATE KEY-----\\
}
\vspace{8mm}
 
\hspace{1mm} La version non-chiffrée:
 
{\ttfamily
-----BEGIN PRIVATE KEY-----\\ -----END PRIVATE KEY-----\\
}
\vspace{8mm}
 
\hspace{1mm}  Les clé privées chiffrées en utilisant PKCS\#5 v2.0 et un compteur d'itération élevé sont plus sécurisés que ceux chiffrés en utilisant les formats compatible SSLeay traditionnels. Le chiffrement par défaut est seulement de 56bits parce que c'est le chiffrement le plus courant dans les implémentations supportant PKCS\#8.
\vspace{5mm} \\
 
 
\hspace{1mm}  Certains logiciels peuvent utiliser des algorithmes de chiffrement basé sur mot de passe PKCS\#12 avec des clés privées au format PKCS\#8: ils sont gérés automatiquement mais il n'y a pas d'option pour les produire.
\vspace{5mm} \\
 
 
\hspace{1mm}  Il est possible d'écrire des clé privée encodées DER au format PKCS\#8 parce que les détails de chiffrement sont inclus au niveau ASN1 alors que le format traditionnel les inclus au niveau PEM.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Algorithmes PKCS\#5 v1.5 et PKCS\#12 }
 
\
 
\hspace{1mm}  Divers algorithmes peuvent être utilisés avec l'option -v1, incluant PKCS\#5 v1.5 et PKCS\#12:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} PBE-MD2-DES PBE-MD5-DES]{Ces algorithmes sont inclus dans la spécification PKCS\#5 v1.5. Ils offrent une protection 56-bits vu qu'ils utilisent DES}
\item[\hspace{1mm} PBE-SHA1-RC2-64 PBE-MD2-RC2-64 PBE-MD5-RC2-64 PBE-SHA1-DES]{Ces algorithmes ne sont pas mentionnés dans la spécification PKCS\#5 v1.5 mais utilisent le même algorithme de dérivation de clé et sont supportés par certains logiciels. Ils sont mentionnés dans PKCS\#5 v2.0. Ils utilisent soit rs2 64bits, ou DES 56bits}
\item[\hspace{1mm} PBE-SHA1-RC4-128 PBE-SHA1-RC4-40 PBE-SHA1-3DES PBE-SHA1-2DES PBE-SHA1-RC2-128 PBE-SHA1-RC2-40]{Ces algorithems utilisent l'algorithme de chiffrement de mot de passe PKCS\#12 et utilisent 3DES ou rc2 128bits.}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Convertir une forme privée traditionnelle en PKCS\#5 v2.0 avec 3DES \\
\hspace{1mm} \textbf{openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem} \\
\hspace{1mm} Convertir un forme privée traditionnelle en PKCS\#5 v2.0 avec AES 256 en mode CBC et hmacWithSHA256 PRF \\
\hspace{1mm} \textbf{openssl pkcs8 -in key.pem -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -out enckey.pem} \\
\hspace{1mm} Convertir une clé privée en PKCS\#8 utilisant PKCS\#5 1.5 (DES) \\
\hspace{1mm} \textbf{openssl pkcs8 -in key.pem -topk8 -out enckey.pem} \\
\hspace{1mm} Convertir un clé privée en PKCS\#8 en utilisant un algorithme compatible PKCS\#5 1.5 (DES) \\
\hspace{1mm} \textbf{openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES} \\
\hspace{1mm} Lire une clé privée PKCS\#8 DER non-chiffré \\
\hspace{1mm} \textbf{openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem} \\
\hspace{1mm} Convertir une clé privée depuis un format PKCS\#8 dans un format traditionnel \\
\hspace{1mm} \textbf{openssl pkcs8 -in pk8.pem -out key.pem} \\
\hspace{1mm} Convertir une clé privée au format PKCS\#8, la chiffrer avec AES-256 et un million d'itération \\
\hspace{1mm} \textbf{openssl pkcs8 -in raw.pem -topk8 -v2 aes-256-cbc -iter 1000000 -out pk8.pem} \\
 
\vspace{1cm}{\huge Standards }
 
\
 
\hspace{1mm}  Le format des clé privée DSA PKCS\#8 (et d'autres) ne sont pas bien documentés: c'est caché dans PKCS\#11 v2.01, section 11.9. Openssl se conforme à ce standard.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
